Crate attohttpc[][src]

This project’s goal is to provide a lightweight and simple HTTP client for the Rust ecosystem. The intended use is for projects that have HTTP needs where performance is not critical or when HTTP is not the main purpose of the application. Note that the project still tries to perform well and avoid allocation where possible, but stays away from Rust’s asynchronous stack to provide a crate that’s as small as possible. Features are provided behind feature flags when possible to allow users to get just what they need.

Check out the repository for more information and examples.

Quick start

let obj = json!({
    "hello": "world",
});

let resp = attohttpc::post("https://my-api.org/do/something")
    .header("X-My-Header", "foo")   // set a header for the request
    .param("qux", "baz")            // set a query parameter
    .json(&obj)?                    // set the request body (json feature required)
    .send()?;                       // send the request

// Check if the status is a 2XX code.
if resp.is_success() {
    // Consume the response body as text and print it.
    println!("{}", resp.text()?);
}

Features

  • charsets support for decoding more text encodings than just UTF-8
  • compress support for decompressing response bodies (default)
  • json support for serialization and deserialization
  • form support for url encoded forms (does not include support for multipart)
  • tls support for tls connections (default)
  • tls-rustls support for TLS connections using rustls instead of native-tls
  • multipart-form support for multipart forms (does not include support for url encoding)

Activating a feature

To activate a feature, specify it in your Cargo.toml file like so

attohttpc = { version = "...", features = ["json", "form", ...] }

Re-exports

pub use crate::charsets::Charset;

Modules

body

Contains types to describe request bodies

charsets

This module is a clean re-export of the encoding_rs crate. You can probably find the charset you need in here.

header

This module is a re-export of the http crate’s header module.

Structs

Error

A type that contains all the errors that can possibly occur while accessing an HTTP server.

Method

The Request Method (VERB)

Multipart

A multipart form created using MultipartBuilder.

MultipartBuilder

A builder for creating a Multipart body.

MultipartFile

A file to be uploaded as part of a multipart form.

PreparedRequest

Represents a request that’s ready to be sent. You can inspect this object for information about the request.

ProxySettings

Contains proxy settings and utilities to find which proxy to use for a given URL.

ProxySettingsBuilder

Utility to build ProxySettings easily.

RequestBuilder

RequestBuilder is the main way of building requests.

RequestInspector

Allows to inspect the properties of a request before preparing it.

Response

Response represents a response returned by a server.

ResponseReader

The ResponseReader is used to read the body of a response.

Session

Session is a type that can carry settings over multiple requests. The settings applied to the Session are applied to every request created from this Session.

StatusCode

An HTTP status code (status-code in RFC 7230 et al.).

TextReader

TextReader converts bytes in a specific charset to bytes in UTF-8.

Enums

ErrorKind

Common errors that can occur during HTTP requests.

InvalidResponseKind

Errors than can occur while parsing the response from the server.

Functions

delete

Create a new RequestBuilder with the DELETE method.

get

Create a new RequestBuilder with the GET method.

head

Create a new RequestBuilder with the HEAD method.

options

Create a new RequestBuilder with the OPTIONS method.

patch

Create a new RequestBuilder with the PATCH method.

post

Create a new RequestBuilder with the POST method.

put

Create a new RequestBuilder with the PUT method.

trace

Create a new RequestBuilder with the TRACE method.

Type Definitions

Result

Wrapper for the Result type with an Error.